#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<stdlib.h>
#include <fcntl.h>

int main(int argc, char const *argv[])
{
    mode_t mask = umask(0777);
    printf("mask = %#o\n",mask);
    //最终的文件权限为
    // = ~0777 & 0777
    // = 0000 & 0777
    // = 0000
    int fd = open("1.txt",O_RDWR|O_CREAT|O_APPEND,0777);
    if (fd < 0)
    {
        perror("1: open");
        exit(-1);
    }
    printf("fd = %d\n",fd);

    umask(0);
    //最终的文件权限为
    // = ~0000 & 0777
    // = 7777 & 0777
    // = 0777
    int fd2 = open("2.txt",O_RDWR|O_CREAT|O_APPEND,0777);
    if (fd2 < 0)
    {
        perror("2: open");
        exit(-1);
    }
    printf("fd = %d\n",fd2);

    umask(02);
    //最终的文件权限为
    // = ~0000 & 0777
    // = 7777 & 0777
    // = 0777
    int fd3 = open("3.txt",O_RDWR|O_CREAT|O_APPEND,0777);
    if (fd3 < 0)
    {
        perror("3: open");
        exit(-1);
    }
    printf("fd = %d\n",fd3);

    return 0;
}

